package com.ychug.gateway.system;

import com.ychug.common.base.ResultAjaxHash;
import com.ychug.framework.web.base.BaseController;
import com.ychug.framework.web.page.TableDataInfo;
import com.ychug.service.system.entity.SysConfigEntity;
import com.ychug.service.system.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 参数配置 信息操作处理
 *
 * @author dds
 */
@Controller
@RequestMapping("/sys/config")
public class SysConfigController extends BaseController {

    @Autowired
    private ISysConfigService configService;

    private String prefix = "modules/sys/config";

    /**
     * 跳转到List页面
     * @return
     */
    @GetMapping()
    public String configList(){
        System.out.println("configList");
        return prefix+"/viewConfig";
    }

    /**
     * 查询参数配置列表
     */
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(SysConfigEntity config)
    {
        startPage();
        List<SysConfigEntity> list = configService.selectConfigList(config);
        return getDataTable(list);
    }


    /**
     * 新增参数配置
     */
    @GetMapping("/add")
    public String add()
    {
        return prefix + "/addConfig";
    }


    @PostMapping("/add")
    @ResponseBody
    public ResultAjaxHash addSave(SysConfigEntity config)
    {
        config.setCreateBy("admin");
        return toAjax(configService.insertConfig(config));
    }


    /**
     * 修改参数配置
     */
    @GetMapping("/edit/{configId}")
    public String edit(@PathVariable("configId") Long configId, ModelMap mmap)
    {
        mmap.put("config", configService.selectConfigById(configId));
        return prefix + "/editConfig";
    }

    /**
     * 修改保存参数配置
     */
    @PostMapping("/edit")
    @ResponseBody
    public ResultAjaxHash editSave(SysConfigEntity config)
    {
        config.setUpdateBy("admin");
        return toAjax(configService.updateConfig(config));
    }

    /**
     * 校验参数键名
     */
    @PostMapping("/checkConfigKeyUnique")
    @ResponseBody
    public String checkConfigKeyUnique(SysConfigEntity config)
    {
        return configService.checkConfigKeyUnique(config);
    }

    /**
     * 删除参数配置
     */

    @PostMapping("/remove")
    @ResponseBody
    public ResultAjaxHash remove(String ids)
    {

        return toAjax(configService.deleteConfigByIds(ids));
    }


}
